package Day13.迷宫问题;

import java.util.Scanner;

/**
 * @author HYHwtx
 * @version 1.0
 * @date 2022/2/19 10:43
 */
public class Demo2 {

    static int  m = 0;//记录移动次数
    //移动圆盘的函数
    public static  void move(int score,char N,char M){
        System.out.println("第"+(++m)+"次移动:"+"把"+score+"号圆盘从"+N+"柱移动到"+M+"柱上去");
    }
    //递归实现汉诺塔
    public static void HanNuoTa(int i,char A,char B,char C){
        if (i==1){
            //一个圆盘时，只要把其从A挪到C即可
           move(1,A,C);

        }else {
            HanNuoTa(i-1, A,C,B);//将A上的圆盘1~i-1个移到B上，C为辅助
            move(i,A,C);//将A上的圆盘i移到C上
            HanNuoTa(i-1,B, A,C);//将B上的圆盘1~i-1个移到C上,A为辅助
        }
    }

    public static void main(String[] args) {
        char A =  'A';
        char B = 'B';
        char C = 'C';
        Scanner in = new Scanner(System.in);
        System.out.print("请输入圆盘的个数：");
        int  i = in.nextInt();
        Demo2.HanNuoTa(i,A,B,C);
        System.out.println("共移动了"+m+"次，将A柱上的圆盘移动到C柱上");
    }
}
